package common

import (
	"com.haojuetrace/actualCombat/model"
	"database/sql"
	"fmt"
	"github.com/spf13/viper"
	"time"
)

var DB *sql.DB

//InitDb 初始化数据库
func InitDb() (db *sql.DB, err error) {
	driverName := viper.GetString("mysql.driverName")
	users := viper.GetString("mysql.users")       //数据库用户
	passwd := viper.GetString("mysql.passwd")     // 数据库密码
	addr := viper.GetString("mysql.addr")         //数据库地址
	port := viper.GetString("mysql.port")         //数据库端口
	database := viper.GetString("mysql.database") //数据库名称
	dsn := fmt.Sprintf("%s:%s@(%s:%s)/%s", users, passwd, addr, port, database)
	db, err = sql.Open(driverName, dsn) //创建数据库链接
	if err != nil {
		return nil, err
	}
	err = db.Ping()
	if err != nil {
		return nil, err
	}
	DB = db
	return DB, nil
}

//GetDb 获取数据库链接
func GetDb() *sql.DB {
	return DB
}

//CreateUser 创建用户
func CreateUser(user *model.Users, db *sql.DB) (id int64, err error) {
	sqlStr := `insert users (createAt,UpdateAt,name ,password,phone) values(?,?,?,?,?)`
	ret, err := db.Exec(sqlStr, time.Now(), time.Now(), user.Name, user.Password, user.PhoneNum)
	if err != nil {
		fmt.Println("创建用户失败，系统繁忙！")
		return 0, err
	}
	id, _ = ret.LastInsertId()
	return id, err
}

//UserExist 查询用户是否存在
func UserExist(field string, value interface{}, db *sql.DB) (exist bool, user *model.Users) {
	sqlStr := fmt.Sprintf("select id,createAt,UpdateAt,name,password,phone from users where %s=?", field)
	user = &model.Users{}
	var uCreateat, uUpdataAt string
	_ = db.QueryRow(sqlStr, value).Scan(&user.Id, &uCreateat, &uUpdataAt, &user.Name, &user.Password, &user.PhoneNum)
	if user.Id > 0 {
		user.CreateAt = uCreateat
		user.UpdateAt = uUpdataAt
		return true, user
	}
	return false, nil
}

//UpdataUser 修改用户信息  暂时不写
